package com.example.controller;

import com.example.pojo.Emp;
import com.example.pojo.EmpQueryParam;
import com.example.pojo.PageResult;
import com.example.pojo.Result;
import com.example.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Delete;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * 员工管理控制器
 */
@RestController
@Slf4j
@RequestMapping("/emps")  //公共前缀
public class EmpController {

    @Autowired
    private EmpService empService;

//    @GetMapping()
//    public Result getEmp(Integer page, Integer pageSize) {  //此处忽略@RequestParam注解，因为参数请求参数与方法参数一致
//        if (page == null)   //默认值也可以使用@RequestParam注解的defaultValue属性指定
//            page = 1;
//        if (pageSize == null)
//            pageSize = 10;
//        log.info("分页查询获取员工信息，起始页：{},页面大小：{}", page, pageSize);
//        PageResult<Emp> pageResult = empService.findEmpAndDept(page, pageSize);
//
//        return Result.success(pageResult);
//
//    }

    @GetMapping()
    public Result searchEmp(EmpQueryParam empQueryParam){  // 使用对象接收请求参数
        log.info("条件分页查询获取员工信息，姓名：{},性别：{},入职日期：{},结束日期：{},，起始页：{},页面大小：{}",
                empQueryParam.getName(),
                empQueryParam.getGender(),
                empQueryParam.getBegin(),    // LocalDate类型参数需要使用@DateTimeFormat注解进行格式化);
                empQueryParam.getEnd(),
                empQueryParam.getPage(),
                empQueryParam.getPageSize()
        );
        PageResult<Emp> searchResult = empService.searchEmp(empQueryParam);
        return Result.success(searchResult);
    }

    // 新增员工
    @PostMapping
    public Result addEmp(@RequestBody Emp emp) {
        log.info("新增员工信息，员工信息：{}", emp);
        empService.addEmp(emp);
        return Result.success();
    }

    // 删除员工
    @DeleteMapping
    public Result deleteEmp(@RequestParam List<Integer> ids){
        log.info("删除员工信息");
        empService.deleteEmp(ids);
        return Result.success();
    }

    // 编辑员工
    @GetMapping("/{id}")
    public Result updateEmp(@PathVariable("id") Integer id){
        log.info("编辑员工信息，员工ID：{}", id);
        Emp emp = empService.getEmpById(id);
        return Result.success(emp);
    }
}